/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package adsreis.com.Controls;

import adsreis.com.Beans.MateriaisBean;
import adsreis.com.acessobd.AcessoMySql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author PauroEnriki
 */
public class MateriaisControl {
    PreparedStatement pstm;
    ResultSet rs;
    String cadastraMaterial = "INSERT INTO MATERIAIS (CODMATERIAL, DESCRICAO, VLRCUSTO, QTDESTOQUE)" +
            "VALUES(?, ?, ?, ?)";
    String consultaMaterial = "SELECT * FROM MATERIAIS  WHERE DESCRICAO LIKE ?";
    String alteraMaterial = "UPDATE MATERIAIS SET DESCRICAO =?, VLRCUSTO =?, QTDESTOQUE = ? WHERE CODMATERIAL =?";
    String excluirMaterial = "DELETE FROM MATERIAIS WHERE CODMATERIAL = ?";
    String consultaduplicidadecodigo = "SELECT CODMATERIAL FROM MATERIAIS WHERE CODMATERIAL LIKE ?";
     String retiraQtdEstoque = "UPDATE MATERIAIS SET QTDESTOQUE=(QTDESTOQUE-?) WHERE CODMATERIAL = ?";
    String buscaqtd = "SELECT QTDESTOQUE FROM MATERIAIS WHERE CODMATERIAL =?";
    String incluiQtdEstoque = "UPDATE MATERIAIS SET QTDESTOQUE=(QTDESTOQUE+?) WHERE CODMATEIRAL = ?";
    String busca = "SELECT * FROM MATERIAIS WHERE CODMATERIAL LIKE ?";
    public static List<MateriaisBean> produtos1 = new ArrayList<>();
    
    
    
    
    
    public void cadastrarMaterial(MateriaisBean material){
        try{
           AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(cadastraMaterial);
           pstm.setInt(1,material.getCodMaterial());
           pstm.setString(2,material.getDescricao());
           pstm.setDouble(3,material.getVlrCusto());
           pstm.setFloat(4, material.getQtdEstoque());
           pstm.executeUpdate();
           mysql.desconectar();
           
       } catch (Exception e){
           e.printStackTrace();
       }
    }
    
    public void retirarQtdEstoque(MateriaisBean materiais){
        try{
            //VendasBean vb = new VendasBean();
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(retiraQtdEstoque);
           pstm.setFloat(1,materiais.getQtdEstoque());
           //pstm.setInt(1,vb.getQtd());
           pstm.setInt(2,materiais.getCodMaterial());
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    
    public void incluirQtdEstoque(MateriaisBean materiais){
        try{
            //VendasBean vb = new VendasBean();
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(incluiQtdEstoque);
           pstm.setFloat(1,materiais.getQtdEstoque());
           //pstm.setInt(1,vb.getQtd());
           pstm.setInt(2,materiais.getCodMaterial());
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    
    public void excluirMaterial(Integer codMaterial){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(excluirMaterial); 
           pstm.setInt(1, codMaterial);
           pstm.executeUpdate();
           mysql.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
    public List<MateriaisBean> listarMateriais(String descricao){
        List<MateriaisBean> produtos = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(consultaMaterial);
           pstm.setString(1, descricao);
           
           rs = pstm.executeQuery();
           MateriaisBean prod;
           while (rs.next()){
               prod = new MateriaisBean();
               prod.setCodMaterial(rs.getInt("codmaterial"));
               prod.setDescricao(rs.getString("descricao"));
               prod.setVlrCusto(rs.getDouble("vlrcusto"));  
               prod.setQtdEstoque(rs.getFloat("qtdestoque"));
               produtos.add(prod);              
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return produtos;        
    }
    
    
    
    
    public Boolean verificarDuplicidadeCodigo(Integer codbarras) {
        Integer produtos = null ;
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(consultaduplicidadecodigo);
           pstm.setInt(1, codbarras);
           rs = pstm.executeQuery();
           MateriaisBean prod;
           while (rs.next()){
               prod = new MateriaisBean();
               prod.setCodMaterial(rs.getInt("codmaterial"));
               produtos = prod.getCodMaterial();    
                
           }
            mysql.desconectar();
           if (produtos.equals(codbarras)){
                    return false;
                }
          
         
           
           
           
           
        }catch (Exception e){
            
            
            return true;
        }
        
        return false;
    }
    
    
    
    
    
    
    
    public List<MateriaisBean> listarBusca(Integer codbarras){
        List<MateriaisBean> produtos = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(busca);
           pstm.setInt(1, codbarras);
           rs = pstm.executeQuery();
           MateriaisBean prod;
           while (rs.next()){
               prod = new MateriaisBean();
               prod.setCodMaterial(rs.getInt("codmaterial"));
               prod.setDescricao(rs.getString("descricao"));
               prod.setVlrCusto(rs.getDouble("vlrcusto")); 
               prod.setQtdEstoque(rs.getFloat("qtdestoque"));
               produtos.add(prod);  
               produtos1 = produtos;
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return produtos1;  
        
        
        
    }
    
    
    public void alterarMaterial(MateriaisBean produtos){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(alteraMaterial);
           pstm.setString(1,produtos.getDescricao());
           pstm.setDouble(2,produtos.getVlrCusto());
           pstm.setFloat(3,produtos.getQtdEstoque());
           pstm.setInt(4,produtos.getCodMaterial());
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    
      public MateriaisBean buscarQtd(Integer id){
        try{
            MateriaisBean pb = new MateriaisBean();
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(buscaqtd);
            pstm.setInt(1, id);
            rs = pstm.executeQuery();
            if(rs.next()){
                //pb.setCodProduto(rs.getInt("codproduto"));
            pb.setQtdEstoque(rs.getFloat("qtdestoque"));
            }
            return pb;            
            
            
        }catch (SQLException ex){
            ex.printStackTrace();
        }
        
        return null;
        
    }
    
    
}
